void controlEngine(eEngineName engineName, eEngineDirection engineDirection, unsigned char speed)
{
   // This is temporary implementation
   // Motor shield library provides implementation
   // This method would be a wrapper for Motor shield implementation
   if (speed > 0)
   {
     digitalWrite(enginePin[engineName], HIGH);
   } else
   {
     digitalWrite(enginePin[engineName], LOW);
   }
}

void moveForward(speed)
{
  controlEngine(ENGINE_1, ENGINE_DIRECTION_FORWARD, speed);
  controlEngine(ENGINE_2, ENGINE_DIRECTION_FORWARD, speed);
  controlEngine(ENGINE_3, ENGINE_DIRECTION_FORWARD, speed);
  controlEngine(ENGINE_4, ENGINE_DIRECTION_FORWARD, speed);
}

void moveBackward(speed)
{
  controlEngine(ENGINE_1, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_2, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_3, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_4, ENGINE_DIRECTION_BACKWARD, speed);
}

void moveLeft(speed)
{
  // This is defined randomly. Should be adjusted after car assembly
  controlEngine(ENGINE_1, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_2, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_3, ENGINE_DIRECTION_FORWARD, speed);
  controlEngine(ENGINE_4, ENGINE_DIRECTION_FORWARD, speed);
}

void moveRight(speed)
{
  // This is defined randomly. Should be adjusted after car assembly
  controlEngine(ENGINE_4, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_3, ENGINE_DIRECTION_BACKWARD, speed);
  controlEngine(ENGINE_2, ENGINE_DIRECTION_FORWARD, speed);
  controlEngine(ENGINE_1, ENGINE_DIRECTION_FORWARD, speed);
}

void stop()
{

}